﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<windows.h>

//判断存储器是大端存储还是小端存储
//int check_sys()
//{
//	int i = 1;
//	//01 00 00 00
//	return (*(char*)&i);
//}
//int main()
//{
//	int ret = check_sys();
//	if (ret == 1)      //01
//	{
//		printf("小端\n");
//	}
//	else		        //00
//	{
//		printf("大端\n");
//	}
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	//1000000 00000000 00000000 00000001   -1原码
//	//1111111 11111111 11111111 11111110   -1反码
//	//1111111 11111111 11111111 11111111   -1补码
//	char a = -1;              //11111111
//	signed char b = -1;
//	unsigned char c = -1;
//	printf("a=%d,b=%d,c=%d", a, b, c); 
//	//a整形提升，符号位补1，转换为原码为-1
//	//b与a一样
//	//c为无符号，整形提升后为0000000 00000000 00000000 11111111 补码
//	return 0;
//}

//int main()
//{
//	char a = -128;
//	//10000000 00000000 00000000 10000000
//	//1000000
//	//11111111111111111111111110000000   补码
//	//打印上述补码转换数字
//	printf("%u\n", a);
//	return 0;
//}


//int main()
//{
//	char a = 128;
//	//00000000 00000000 00000000 10000000
//	//10000000
//	//111111111111111111111111110000000  整形提升后补码
//	printf("%u\n", a);  
//	return 0;
//}

//int main()
//{
//	char a[1000];
//	int i;
//	for (i = 0; i < 1000; i++)
//	{
//		a[i] = -1 - i;
//		//-1,-2,-3,-4.....-1000
//		//char取值范围为-127 - 128,-128取127，依次递进，总共255，打印255
//	}
//	printf("%d", strlen(a));
//	return 0;
//}


//unsigned char i = 0;   //取值为0~255，不为负数，死循环
//int main()
//{
//	for (i = 0; i <= 255; i++)
//	{
//		printf("hello world\n");
//	}
//	return 0;
//}


//int main()
//{
//	unsigned int i;
//	for (i = 9; i >= 0; i--)  //00000000 00000000 00000000 00010001 
//		                      //11111111 11111111 11111111 11111111
//	{
//		printf("%u\n", i);
//		Sleep(1000);
//	}
//	return 0;
//}


//X86环境 ⼩端字节序
//int main()
//{
//	int a[4] = { 1, 2, 3, 4 }; // 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00
//	int* ptr1 = (int*)(&a + 1);  //ptr1->&a+1跳过整个数组，指向数组后地址
//	int* ptr2 = (int*)((int)a + 1);  //a的地址假设为0x1122ff34，取出后+1为0x1122ff35 也就读取00 00 00 02
//	printf("%#x,%#x", ptr1[-1], *ptr2);//ptr1[-1] = *(ptr-1),打印4和20 00 00 00
//	return 0;
//}


int main()
{
	int n = 9;
	float* pFloat = (float*)&n; //00000000 00000000 00000000 00001001
	printf("n的值为：%d\n", n); //9
	printf("*pFloat的值为：%f\n", *pFloat);//0 00000000 0000000 00000000 00001001
	*pFloat = 9.0;
	printf("num的值为：%d\n", n);     //0 10000010 001 0000 0000 0000 0000 0000   1091567616
	printf("*pFloat的值为：%f\n", *pFloat);
	return 0;
}

